package com.mathdroid.model.abilities.specs;

import com.mathdroid.model.abilities.AbilityTemplate;
import com.mathdroid.model.abilities.specs.sniper.*;

/**
 * This is the default ability template for the Sniper specialization.
 */
public final class Sniper extends AbilityTemplate {

	/**
	 * Generated UID.
	 */
	private static final long serialVersionUID = 1690955279205739889L;

	/**
	 * Create a default Assassin ability template.
	 */
	public Sniper() {
		this.setName("Default Sniper");
		
		//TODO --- set if the abilities affect or are affected by the GCD!
		//TODO --- training levels
		
		/* ***************** The talent abilities come first **************** */

		this.add(new Cull());
		this.add(new CorrosiveGrenade());
		this.add(new PlasmaProbe());
		this.add(new InterrogationProbe());
		this.add(new WeakeningBlast());
		this.add(new Followthrough());
		this.add(new Diversion());
		this.add(new EMPDischarge());
		this.add(new RapidFire());
		
		/* ************** Those are specialization abilities (1) ************ */
		
		this.add(new SuppressiveFire());
		this.add(new SeriesOfShots());
		this.add(new Ambush());
		this.add(new Takedown());
		this.add(new LegShot());
		this.add(new ShatterShot());
		this.add(new LazeTarget());
		this.add(new TargetAcquired());
		
		/* ******************** General class abilities (2) ***************** */
		
		this.add(new OrbitalStrike());
		this.add(new Headshot());
		this.add(new Eviscerate());
		this.add(new Distraction());
		this.add(new AdrenalineProbe());
		this.add(new OverloadShot());
		this.add(new CorrosiveDart());
		this.add(new Debilitate());
		this.add(new FragmentationGrenade());
		this.add(new Shiv());
		this.add(new ExplosiveProbe());
		this.add(new RifleShot());
		this.add(new Snipe());
		
		/* ************************** Defensive (1) ************************* */
		
		this.add(new BallisticShield());
		this.add(new Entrench());
		this.add(new CoverPulse());
		
		/* ************************** Defensive (2) ************************* */
		
		this.add(new ShieldProbe());
		this.add(new Countermeasures());
		this.add(new Evasion());
		this.add(new AdvancedRecon());
		this.add(new SliceDroid());
		this.add(new Escape());
		this.add(new FlashBang());
		this.add(new Crouch());
		this.add(new TakeCover());
		
		/* *************************** Passive (1) ************************** */
		
		this.add(new AdvancedTargeting());
		this.add(new HoldPosition());
		this.add(new SniperRifle());
		
		/* *************************** Passive (2) ************************** */
		
		this.add(new SpeederPiloting());
		this.add(new Sprint());
		this.add(new EmergencyFleetPass());
		this.add(new ArmorProficiencyLight());
		this.add(new ArmorProficiencyMedium());
		this.add(new Coordination());
		this.add(new EmpireFaction());
		this.add(new Holoconference());
		this.add(new QuickTravel());
		this.add(new Recuperate());
		this.add(new WeaponProficiencyBlasterRifle());
		this.add(new WeaponProficiencyVibroknife());
		this.add(new FieldRevive());
		this.add(new Revive());
		this.add(new ReviveCompanion());
	}
}
